#ifndef MYDFT_H
#define MYDFT_H

#ifndef OPENCVSTL
#define OPENCVSTL
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
#endif

//#ifndef TIMECALC
//#define TIMECALC
//#include <time.h>
//#include "timeCalc.h"
//#endif


int DFT_naive(Mat_<double>& gRe, Mat_<double>& gIm, Mat_<double>& GRe, Mat_<double>& GIm);
int IDFT_naive(Mat_<double>& gRe, Mat_<double>& gIm, Mat_<double>& GRe, Mat_<double>& GIm);

int DFT_separated(Mat_<double>& gRe, Mat_<double>& gIm, Mat_<double>& GRe, Mat_<double>& GIm);
int IDFT_separated(Mat_<double>& gRe, Mat_<double>& gIm, Mat_<double>& GRe, Mat_<double>& GIm);

int DFT_ptr(double* gRe ,double* gIm, double* GRe, double* GIm , int rows , int cols);
int IDFT_ptr(double* gRe ,double* gIm,double* GRe,double* GIm , int rows , int cols);

int FFT_separated(Mat_<float>& gRe, Mat_<float>& gIm, Mat_<float>& GRe, Mat_<float>& GIm);
int IFFT_separated(Mat_<float>& gRe, Mat_<float>& gIm, Mat_<float>& GRe, Mat_<float>& GIm);

int FFT_ptr(float* gRe ,float* gIm, float* GRe, float* GIm , int rows , int cols);
int IFFT_ptr(float* gRe ,float* gIm, float* GRe, float* GIm , int rows , int cols);
int testDFT();

#endif
